home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / newmat08.zip / TMT3.CPP < prev    next >
C/C++ Source or Header  |  1995-01-11  |  3KB  |  83 lines

  1.  
  2. //#define WANT_STREAM
  3.  
  4. #include "include.h"
  5.  
  6. #include "newmat.h"
  7.  
  8.  
  9. /**************************** test program ******************************/
  10.  
  11. void Print(const Matrix& X);
  12. void Print(const UpperTriangularMatrix& X);
  13. void Print(const DiagonalMatrix& X);
  14. void Print(const SymmetricMatrix& X);
  15. void Print(const LowerTriangularMatrix& X);
  16.  
  17. void trymat3()
  18. {
  19. //   cout << "\nThird test of Matrix package\n";
  20.    Tracer et("Third test of Matrix package");
  21.    Exception::PrintTrace(TRUE);
  22.  
  23.    int i,j;
  24.  
  25.    {
  26.       Tracer et1("Stage 1");
  27.       SymmetricMatrix S(7);
  28.       for (i=1;i<=7;i++) for (j=1;j<=i;j++) S(i,j)=i*i+j;
  29.         S=-S+2.0;
  30.  
  31.       DiagonalMatrix D(7);
  32.       for (i=1;i<=7;i++) D(i,i)=S(i,i);
  33.  
  34.       Matrix M4(7,7); { M4=D+(D+4.0); M4=M4-D*2.0;  M4=M4-4.0; Print(M4); }
  35.       SymmetricMatrix S2=D; Matrix M2=S2;  { M2=-D+M2; Print(M2); }
  36.       UpperTriangularMatrix U2=D; { M2=U2; M2=D-M2; Print(M2); }
  37.       LowerTriangularMatrix L2=D; { M2=L2; M2=D-M2; Print(M2); }
  38.       M2=D; M2=M2-D; Print(M2);
  39.       for (i=1;i<=7;i++) for (j=1;j<=i;j++) L2(i,j)=2.0-i*i-j;
  40.       U2=L2.t(); D=D.t(); S=S.t();
  41.       M4=(L2-1.0)+(U2+1.0)-D-S; Print(M4);
  42.       M4=(-L2+1.0)+(-U2-1.0)+D+S; Print(M4);
  43.    }
  44.  
  45.    {
  46.       Tracer et1("Stage 2");
  47.       DiagonalMatrix D(6);
  48.       for (i=1;i<=6;i++) D(i,i)=i*3.0+i*i+2.0;
  49.       UpperTriangularMatrix U2(7); LowerTriangularMatrix L2(7);
  50.       for (i=1;i<=7;i++) for (j=1;j<=i;j++) L2(i,j)=2.0-i*i+j;
  51.         { U2=L2.t(); }
  52.       DiagonalMatrix D1(7); for (i=1;i<=7;i++) D1(i,i)=(i-2)*(i-4);
  53.       Matrix M2(6,7);
  54.       for (i=1;i<=6;i++) for (j=1;j<=7;j++) M2(i,j)=2.0+i*j+i*i+2.0*j*j;
  55.       Matrix MD=D; SymmetricMatrix MD1(1); MD1=D1;
  56.       Matrix MX=MD*M2*MD1 - D*(M2*D1); Print(MX);
  57.       MX=MD*M2*MD1 - (D*M2)*D1; Print(MX);
  58.       {
  59.          D.ReDimension(7); for (i=1;i<=7;i++) D(i,i)=i*3.0+i*i+2.0;
  60.          LowerTriangularMatrix LD(1); LD=D;
  61.          UpperTriangularMatrix UD(1); UD=D;
  62.          M2=U2; M2=LD*M2*MD1 - D*(U2*D1); Print(M2);
  63.          M2=U2; M2=UD*M2*MD1 - (D*U2)*D1; Print(M2);
  64.          M2=L2; M2=LD*M2*MD1 - D*(L2*D1); Print(M2);
  65.          M2=L2; M2=UD*M2*MD1 - (D*L2)*D1; Print(M2);
  66.       }
  67.    }
  68.  
  69.     {
  70.         Tracer et1("Stage 3");
  71.         // test inverse * scalar
  72.         DiagonalMatrix D(6);
  73.         for (i=1;i<=6;i++) D(i)=i*i;
  74.         DiagonalMatrix E = D.i() * 4.0;
  75.         DiagonalMatrix I(6); I = 1.0;
  76.         E=D*E-I*4.0; Print(E);
  77.         E = D.i() / 0.25; E=D*E-I*4.0; Print(E);
  78.     }
  79.  
  80. //   cout << "\nEnd of third test\n";
  81. }
  82.  
  83.